home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / Ant Movie Catalog 3.5.0.2 / amc_install.exe / {app} / Scripts / cineman.ru.ifs < prev    next >
Text File  |  2005-03-13  |  6KB  |  209 lines

  1. (***************************************************
  2.  
  3. Ant Movie Catalog importation script
  4. www.antp.be/software/moviecatalog/
  5.  
  6. [Infos]
  7. Authors=Dmitry501
  8. Title=cineman.ru
  9. Description=cineman.ru - Russian films
  10. Site=www.cineman.ru
  11. Language=RU
  12. Version=
  13. Requires=3.5.0
  14. Comments= Special for Alexsandr
  15. License=This program is free software; you can redistribute it and/or modify it under the  terms of the GNU General Public License as published by the Free Software Foundation;  either version 2 of the License, or (at your option) any later version. |
  16. GetInfo=1
  17.  
  18. [Options]
  19.  
  20. ***************************************************)
  21.  
  22. program cineman_divx;
  23. const
  24.   BaseAddress = 'http://www.cineman.ru/';
  25. var
  26.   MovieName: string;
  27. function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
  28. var
  29.   i: Integer;
  30. begin
  31.   result := -1;
  32.   if StartAt < 0 then
  33.     StartAt := 0;
  34.   for i := StartAt to List.Count-1 do
  35.     if Pos(Pattern, List.GetString(i)) <> 0 then
  36.     begin
  37.       result := i;
  38.       Break;
  39.     end;
  40. end;
  41. function HTMLRemove(Value: String): String;
  42. begin
  43.   HTMLDecode(Value);
  44.   HTMLRemoveTags(Value);
  45.   Value := Trim(Value);
  46.   result := Value;
  47. end;
  48. procedure AnalyzeFilmPage(Address: String);
  49. var
  50.   Page : TStringList;
  51.   Line, Value : string;
  52.   LineNr, BeginPos, EndPos: Integer;
  53. begin
  54.   Page := TStringList.Create;
  55.   Page.Text := GetPage(Address);
  56.   // URL
  57.   SetField(fieldURL, Address);
  58.   // Year
  59.   LineNr := FindLine('├εΣ', Page, 0);
  60.   if LineNr > -1 then begin
  61.     Value := Page.GetString(LineNr+1);
  62.     Value := HTMLRemove(Value);
  63.     SetField(fieldYear, Value);
  64.   end;
  65.   // Title
  66.   LineNr := FindLine('<big><strong>', Page, 0);
  67.   if LineNr > -1 then begin
  68.     Value := Page.GetString(LineNr+2);
  69.     Value := Value + Page.GetString(LineNr+3);
  70.     Value := HTMLRemove(Value);
  71.     LineNr := pos(' ', Value);
  72.     SetField(fieldTranslatedTitle, Left(Value,LineNr-1));
  73.     Value := copy(Value, LineNr+5,Length(Value));
  74.     Value := StringReplace(Value, '(', '');
  75.     Value := StringReplace(Value, ')', '');
  76.     SetField(fieldOriginalTitle, Value);
  77.   end;
  78.   // Director
  79.   LineNr := FindLine('╨σµΦ±±╕≡:', Page, 0);
  80.   if LineNr > -1 then
  81.   begin
  82.     Value := Page.GetString(LineNr+1);
  83.     Value := HTMLRemove(Value);
  84.     SetField(fieldDirector, Value);
  85.   end;
  86.   // Actors
  87.   LineNr := FindLine('┬ ≡εδ ⌡:', Page, 0);
  88.   if LineNr > -1 then
  89.   begin
  90.     Value := Page.GetString(LineNr+1);
  91.     Value := HTMLRemove(Value);
  92.     SetField(fieldActors, Value);
  93.   end;
  94.   //Country
  95.   LineNr := FindLine('╤≥≡αφα:', Page, 0);
  96.   if LineNr > -1 then
  97.   begin
  98.     Value := Page.GetString(LineNr+1);
  99.     Value := HTMLRemove(Value);
  100.     SetField(fieldCountry, Value);
  101.   end;
  102.   //Category
  103.   LineNr := FindLine('╞αφ≡:', Page, 0);
  104.   if LineNr > -1 then
  105.   begin
  106.     Value := Page.GetString(LineNr+1);
  107.     Value := HTMLRemove(Value);
  108.     SetField(fieldCategory, Value);
  109.   end;
  110.   //Description
  111.   LineNr := FindLine('╩ε∞∞σφ≥α≡ΦΦ:', Page, 0);
  112.   if LineNr > -1 then
  113.   begin
  114.     Value := Page.GetString(LineNr+1);
  115.     Value := HTMLRemove(Value);
  116.     SetField(fieldDescription, Value);
  117.   end;
  118.   // Discs
  119.   LineNr := FindLine('╩εδΦ≈σ±≥Γε ΣΦ±ΩεΓ:', Page, 0);
  120.   if LineNr > -1 then
  121.   begin
  122.     Value := Page.GetString(LineNr+1);
  123.     Value := HTMLRemove(Value);
  124.     SetField(fieldDisks, Value);
  125.   end;
  126.   // Length
  127.   LineNr := FindLine('┬≡σ∞ :', Page, 0);
  128.   if LineNr > -1 then
  129.   begin
  130.     Value := Page.GetString(LineNr+1);
  131.     Value := HTMLRemove(Value);
  132.     SetField(fieldLength, Value);
  133.   end;
  134.   // Video
  135.   LineNr := FindLine('╘ε≡∞α≥ ΓΦΣσε:', Page, 0);
  136.   if LineNr > -1 then
  137.   begin
  138.     Value := Page.GetString(LineNr+1);
  139.     Value := HTMLRemove(Value);
  140.     SetField(fieldVideoFormat, Value);
  141.    end;
  142.   // Audio
  143.   LineNr := FindLine('╘ε≡∞α≥ τΓ≤Ωα:', Page, 0);
  144.   if LineNr > -1 then
  145.   begin
  146.     Value := Page.GetString(LineNr+1);
  147.     Value := HTMLRemove(Value);
  148.     SetField(fieldAudioFormat, Value);
  149.    end;
  150.   // Get Picture
  151.   LineNr := FindLine('<img src=', Page, 0);
  152.   if LineNr > -1 then
  153.   begin
  154.     Line := Page.GetString(LineNr);
  155.     BeginPos := pos('<img src=', Line)+11;
  156.     Delete(Line, 1, BeginPos);
  157.     EndPos := pos(' ', Line);
  158.     Value := BaseAddress + copy(Line, 1, EndPos - 1);
  159.     GetPicture(Value); // False = do not store picture externally ; store it in the catalog file
  160.   end;
  161. end;
  162. procedure AnalyzePage(Address: string);
  163. var
  164.   Page: TStringList;
  165.   LineNr, StartPos, EndPos: Integer;
  166.   Line: string;
  167.   MovieAddress, findMovieName : string;
  168. begin
  169.   PickTreeClear;
  170.   Page := TStringList.Create;
  171.   Page.Text := GetPage(Address);
  172.   if (pos('φαΘΣσφε ∩ετΦ÷ΦΘ :', Page.Text)>0) then
  173.   begin
  174.     PickTreeAdd('═αΘΣσφε φα cineman.ru', '');
  175.     LineNr :=0;
  176.     repeat
  177.       LineNr := FindLine('<td width=29%  height= 10><font size=2 color=#1B5188><strong>', Page, LineNr);
  178.       If LineNr >0 Then Begin
  179.         Line := Page.GetString(LineNr);
  180.         StartPos := pos('<a href=', Line) + 8;
  181.         EndPos := pos(' target=_blank>',Line);
  182.         MovieAddress := 'cgi/' + copy(Line, StartPos, EndPos - StartPos);
  183.         StartPos := EndPos + 15;
  184.         EndPos := pos('</a><strong>',Line);
  185.         FindMovieName := copy(Line, StartPos, EndPos - StartPos);
  186.         HTMLRemoveTags(FindMovieName);
  187.         HTMLDecode(FindMovieName);
  188.         PickTreeAdd(FindMovieName, BaseAddress + MovieAddress);
  189.         LineNr := LineNr + 1;
  190.       End;
  191.     until (LineNr<1);
  192.     if PickTreeExec(Address) then begin
  193.       AnalyzeFilmPage(Address);
  194.     end;
  195.     Page.Free;
  196.   end;
  197.   //DisplayResults;
  198. end;
  199. begin
  200.   PickListClear;
  201.   MovieName := GetField(fieldOriginalTitle);
  202.   if Input('Import from cineman.ru', 'Enter the title of the movie:', MovieName) then begin
  203.     MovieName:=AnsiLowerCase(MovieName);
  204.     MovieName:=AnsiUpFirstLetter(MovieName);
  205.     AnalyzePage('http://www.cineman.ru/cgi/search.pl?WORD='+UrlEncode(MovieName)+'&TYPE=name');
  206.   end;
  207. end.
  208.  
  209.